package cn.proandcus;

import lombok.extern.slf4j.Slf4j;

/**
 * 生产者和消费者的中间容器
 */
@Slf4j
public class Box {
    private  int milk;
    private  boolean status=false;//表示生产状态 false表示缓存区空
    //消费者消费
    public  synchronized void getMilk() throws InterruptedException {
        //log.info("消费者状态"+!status);
        while (!status){ //没有牛奶消费 等待生产
            wait();
            //log.info(Thread.currentThread().getName()+"被关小黑屋");
        }//有牛奶 直接消费
           Thread.sleep(1000);
            System.out.println("消费者"+Thread.currentThread().getName()+"消费牛奶:" + this.milk);
            status=false;//消费了改变状态
           // log.info("消费者状态"+status);
            notifyAll();//唤醒
    }
    //生产者生产
    public synchronized void setMilk(int milk) throws InterruptedException {
        //log.info("生产者状态"+status);
        while (status){//存在牛奶 等待消费
            wait();
        }
        Thread.sleep(1000);
        //不存在牛奶就生产牛奶
            this.milk = milk;
            System.out.println("生产者生产牛奶:" + this.milk);
            status=true;//生产了改变状态
            notifyAll();
            //log.info("释放一个消费者");
    }
}
